linux操作系统中,加载和删除内核模块的命令是什么?

您所在的位置:网站首页 openwrt 内核编译 linux操作系统中,加载和删除内核模块的命令是什么?

linux操作系统中,加载和删除内核模块的命令是什么?

2023-03-20 15:14| 来源: 网络整理| 查看: 265

modprobe命令\x0d\x0aLinux命令:modprobe 。\x0d\x0a功能说明:自动处理可载入模块。\x0d\x0a语法:modprobe [-acdlrtvV][--help][模块文件][符号名称 = 符号值]。\x0d\x0a补充说明:modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。\x0d\x0a\x0d\x0a内容\x0d\x0a1、modprobe 命令是根据depmod -a的输出/lib/modules/version/modules.dep来加载全部的所需要模块。\x0d\x0a2、删除模块的命令是:modprobe -r filename。\x0d\x0a3、系统启动后,正常工作的模块都在/proc/modules文件中列出。使用lsmod命令也可显示相同内容。\x0d\x0a4、在内核中有一个“Automatic kernel module loading"功能被编译到了内核中。当用户尝试打开某类型的文件时,内核会根据需要尝试加载相应的模块。/etc/modules.conf或 /etc/modprobe.conf文件是一个自动处理内核模块的控制文件。\x0d\x0amodprobe命令主要用于在Linux 2.6内核中加载和删除Linux内核模块。通过此命令用户可以轻松地加载和删除Linux内核模块,同时使用此命令加载Linux内核模块时,Linux内核会自动解决内核模块之间的依赖关系,将相互依赖的模块自动加载,如下所示:\x0d\x0a1) 加载RAID1阵列级别模块:\x0d\x0a[root@rhel5 boot]# modprobe raid1 \x0d\x0a\x0d\x0a2) 显示已加载的RAID1阵列级别模块:\x0d\x0a[root@rhel5 boot]# lsmod |grep raid1 raid1 25153 0 \x0d\x0a\x0d\x0a3) 删除RAID1阵列级别模块:\x0d\x0a[root@rhel5 boot]# modprobe -r raid1 \x0d\x0a\x0d\x0a4) 显示RAID1阵列级别模块:\x0d\x0a[root@rhel5 boot]# lsmod |grep raid1 \x0d\x0a\x0d\x0amodprobe命令在加载模块时会自动解决依赖的模块。当加载的模块需依赖另一个模块时,系统会自动将此模块加载。而当用户使用insmod命令加载模块时,则不会自动解决相对应的依赖模块。\x0d\x0amodprobe命令中的"-r"参数表示删除指定模块,"-c"参数表示显示/etc/modprobe.conf配置文件的参数,"-C"参数表示指定内核配置文件,"-f"表示覆盖,"-l"表示显示模块的绝对路径。\x0d\x0a[root@rhel5 boot]# modprobe -l|grep raid /lib/modules/2.6.18-8.el5/kernel/drivers/md/raid0.ko /lib/modules/2.6.18-8.el5/kernel/drivers/md/raid456.ko /lib/modules/2.6.18-8.el5/kernel/drivers/md/raid1.ko /lib/modules/2.6.18-8.el5/kernel/drivers/md/raid10.ko /lib/modules/2.6.18-8.el5/kernel/drivers/scsi/megaraid.ko /lib/modules/2.6.18-8.el5/kernel/drivers/scsi/aacraid/aacraid.ko /lib/modules/2.6.18-8.el5/kernel/drivers/scsi/megaraid/megaraid_mbox.ko /lib/modules/2.6.18-8.el5/kernel/drivers/scsi/megaraid/megaraid_mm.ko /lib/modules/2.6.18-8.el5/kernel/drivers/scsi/megaraid/megaraid_sas.ko /lib/modules/2.6.18-8.el5/kernel/drivers/scsi/raid_class.ko \x0d\x0a\x0d\x0a以上命令表示显示系统中所有的编译模块,并过滤包含有raid字符串的模块。linuxko加载在el0,ko文件是kernel object文件(内核模块),该文件的意义就是把内核的一些功能移动到内核外边, 需要的时候插入内核,不需要时卸载。

二、优点

(1)这样可以缩小内核体积;

(2)使用方便。

三、.ko文件一般的用处

(1)作为一个功能模块,需要使用时,直接插入运行就行。如在imx6上连接模拟摄像头,先运行模拟摄像头对应的驱动模块 camera.ko文件,然后对应的工程执行文件运行就行。

linux内核支持动态加载模块,内核模块以.ko为后缀,在Linux系统中,内核模块放在/lib/modulex/x.x.x目录中,其中x.x.x为linux版本号

加载模块

insmod xxx.ko

如果带参数 insmod xxx.ko a=1

卸载模块

rmmod xxx.ko

支持的数据类型

bool :布尔类型

invbool:颠倒了值的bool类型

charp :字符指针类型,内存为用户提供的字符串分配

int:整型

long :长整型

short :短整型

uint :无符号整型

ulong :无符号长整型

ushort :无符号短整型

内核模块源码Makefile编写格式和linux源码的格式一样

在OpenWrt系统中,内核模块编译和应用层的package编译类似

make package/模块名/compile V=s

比如:

make package/hello_kernel/compile V=s

编译完成后会生成.ko文件,目录文件在build_dir中,但和应用层的build目录有点区别,内核模块的package放在linux目录,如(X86平台):

build_dir/target-x86_64_musl/linux-x86_64/

将编译完成的ko文件传输到OpenWrt系统中,注意编译平台和开发板平台的系统架构要一致。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://outofmemory.cn/yw/6166385.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3